﻿using System;
using System.Collections.Generic;
using Cesave.Domain.PermisosModule.Entities;

namespace Cesave.Domain.PermisosModule.Contracts.Juntas
{
	/// <summary>
	/// 
	/// </summary>
	public interface IJuntaService
		: IDisposable
	{
		/// <summary>
		/// 
		/// </summary>
		/// <param name="estadoGuid"></param>
		/// <returns></returns>
		List<Junta> FindJuntasByEstado(Guid estadoGuid);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="estadoGuid"></param>
		/// <param name="status"></param>
		/// <returns></returns>
		List<Junta> FindJuntasByEstadoAndStatus(Guid estadoGuid, bool status = true);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="distritoGuid"></param>
		/// <returns></returns>
		List<Junta> FindJuntasByDistrito(Guid distritoGuid);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="distritoGuid"></param>
		/// <param name="status"></param>
		/// <returns></returns>
		List<Junta> FindJuntasByDistritoAndStatus(Guid distritoGuid, bool status = true);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipioGuid"></param>
		/// <returns></returns>
		List<Junta> FindJuntasByMunicipio(Guid municipioGuid);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipioGuid"></param>
		/// <param name="status"></param>
		/// <returns></returns>
		List<Junta> FindJuntasByMunicipioAndStatus(Guid municipioGuid, bool status = true);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="juntaGuid"></param>
		/// <returns></returns>
		Junta FindJuntaByGuid(Guid juntaGuid);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="junta"></param>
		void AddJunta(Junta junta);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="junta"></param>
		void ChangeJunta(Junta junta);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="junta"></param>
		void DeleteJunta(Junta junta);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="junta"></param>
		void ActivateJunta(Junta junta);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="junta"></param>
		void DeactivateJunta(Junta junta);

	}
}
